using System;
using System.Xml.Serialization;

namespace Se.Framework.Common.Config.Urls
{
    [Serializable]
    [XmlInclude(typeof(UrlPathPart))]
    [XmlInclude(typeof(UrlQueryStringPart))]
    [XmlInclude(typeof(UrlPathDynamic))]
    [XmlInclude(typeof(UrlPathStatic))]
    [XmlInclude(typeof(UrlQueryStringDynamic))]
    [XmlInclude(typeof(UrlQueryStringStatic))]
    public abstract class UrlSection
    {
        [XmlAttribute]
        public int Order { get; set; }

        [XmlAttribute]
        public virtual bool Required { get; set; }

        [XmlAttribute]
        public string Key { get; set; }

        [XmlAttribute]
        public virtual string Value { get; set; }

        public abstract UrlSection Clone();        
    }
}